﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UWP.Douban.Models;
using UWP.Douban.Utils;
using Windows.Storage;

namespace UWP.Douban.SampleData
{
    public  class SampleDataUtil
    {
        #region 获取示例数据，从json文件生成
        public static async Task<IEnumerable<Topic>> GetTopics()
        {
            var text = await PathIO.ReadTextAsync("ms-appx:///SampleData/ExploreTopics.json");

            var topics = JsonUtil.DeseriEnumerable<Topic>(text, "$.topics..topic").ToList();

            return topics;
        }

        internal static async Task<DoumailThread> GetDouMailThread()
        {
            var text = await PathIO.ReadTextAsync("ms-appx:///SampleData/doumailDetail.json");

            var model = JsonUtil.Deserialize<DoumailThread>(text);

            return model;
        }

        public static async Task<IEnumerable<Comment>> GetComments()
        {
            var text = await PathIO.ReadTextAsync("ms-appx:///SampleData/Comments.json");

            var comments = JsonUtil.DeseriEnumerable<Comment>(text, "$.comments[*]").ToList();

            return comments;
        }

        internal static async Task<IEnumerable<DouLastMail>> GetDouLastMails()
        {
            var text = await PathIO.ReadTextAsync("ms-appx:///SampleData/doumail.json");

            var models = JsonUtil.DeseriEnumerable<DouLastMail>(text, "$.threads[*]").ToList();

            return models;
        }

        internal static async Task<UserInfo> GetMe()
        {
            var text = await PathIO.ReadTextAsync("ms-appx:///SampleData/userInfo.json");

            var user = JsonUtil.Deserialize<UserInfo>(text);

            return user;
        }

        public static async Task<IEnumerable<Comment>> GetPopularComments()
        {
            var text = await PathIO.ReadTextAsync("ms-appx:///SampleData/Comments.json");

            var comments = JsonUtil.DeseriEnumerable<Comment>(text, "$.popular_comments[*]").ToList();

            return comments;
        }

        public static   async Task<Group> GetGroupDetail()
        {
            var text = await PathIO.ReadTextAsync("ms-appx:///SampleData/groupdetail.json");

            var group = JsonUtil.Deserialize<Group>(text);
            return group;
        }

        public static async Task<IEnumerable<Topic>> GetGroupTopics()
        {
            var text = await PathIO.ReadTextAsync("ms-appx:///SampleData/grouptopics.json");
            var topics = JsonUtil.DeseriEnumerable<Topic>(text, "$.topics[*]").ToList();

            return topics;
        }

        #endregion 


        public static DoumailThread GetDouMailThreadByManual()
        {
            return new Models.DoumailThread
            {
                Doumails = new List<Models.Doumail>() {
                    GetDoumailByManual(),
                    GetDoumailByManual(),
                    GetDoumailByManual(),
                }
            };
        }

        public static DouLastMail GetDouLastMailByManual()
        {
            return new Models.DouLastMail()
            {
                Target =GetUserByManual(),

                LastMail = GetDoumailByManual(),
                TargetId = 78962582,
                LastMailId = 839237803,
                Id = 1131790714
            };
        }

        public static  Group GetGroupByManual()
        {
            return new Models.Group()
            {
                Avatar = "https://img3.doubanio.com/view/group_topic/large/public/p39562291.jpg",
                Name = "这从来就不是一个人的天才世界",
                Description = "这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界这从来就不是一个人的天才世界",
            }; 
        }

        public static Topic GetTopicByManual()
        {
            return new Models.Topic()
            {
                Updated = DateTime.Parse("2015-12-09 13:45:46"),
                Photos = new List<Models.Photo>()
                {
                   GetPhotoByManual(),
                   GetPhotoByManual(),
                   GetPhotoByManual(),
                   GetPhotoByManual(),
                   GetPhotoByManual(),
                },

                Group = GetGroupByManual(),

                LikeCount = 12,
                Alt = "://www.douban.com/group/topic/81352712/",
                Id = "81352712",
                Author = GetUserByManual(),
                Title = "有没有的人的的的热快来",
                Created = DateTime.Parse("2015-12-09 13:27:12"),
                Content = "好吧，很多很多年以来第一次发帖。\n此时此刻我的心情，犹如这只巴吉度犬。\n大学室友y找到了新男友，我刚知道，有点受刺激。\n我就是这么变态，一边她高兴一边受刺激。\n为什么呢？\n按照脸来说，绝对不夸张，我是我们寝室6个人里面最好看的啊！这点毋庸置疑！\n按身材来说，虽然我胖但是也没有胖的令人发指啊？也不是寝室里最胖的。虽然我胖，但是有胸有腰有屁股啊！\n按性格来说，我是最包容的那个了，老好人。大咧咧不计较，不矫情，很会为别人考虑，基本所有人都夸性格好啊！仗义豪气不差事。\n而且绝对有趣，知识面超级广，什么话题都能聊起来。熟人面前逗比一枚。\n说不上才华横溢，但是绝对是才女啊，能写会画，唱歌好听，打的一手好羽毛球，还大爱lol。\n但是！为什么？！为什么比我胖，没我好看的，矫情的，性格古怪脾气奇葩的都能找到对象！但是我单身至今呢？！\n你们不相信男女之间的纯友谊么？事实证明，跟我关系好的男生都是纯友谊！比白开水还纯！绝对没有任何可能！性格互相吸引，但只是友谊，彼此心知肚明。\n很多女生朋友说羡慕我，羡慕个鬼啊！我不想要啊！！！我想像你们一样有男朋友，换男朋友啊！\n闺蜜说我不会发嗲，不会卖萌，我会啊！我卖给她她还说我恶心！我少女心她说我发骚。。\n基友说我，不要什么事都自己扛，偶尔寻求下帮助，男生就是会对女生有保护欲啊，你这都不给别人机会。基本上能自己解决的事我都能解决啊！习惯了啊！扛包拎行李这种体力活，我都自己来，不是因为力大如牛，是tmd习惯了啊！\n基友又说，像你这种情商智商都高的，一般的你看不上，能压制住你的还真不好找。我没那么多要求啊！顺眼聊的来就行啊！顺眼很难么？我看王宝强都顺眼啊！聊的来很难么？思路正常稍微幽默点就可以啊！\n25年了！25年的单身狗！我要真是条狗现在已经挂了吧？！\n真是心塞的不要不要的。。。。\n我怀疑我男朋友被他妈流掉了。。。。\n我准备找到男朋友先暴打一顿再说。。。。\n可是，我得先找个男朋友啊！\n女朋友也可以啊！\n真心不丑，爆局部照好吧？\n求关爱，求抚慰，求聊天，求交友，求对象！！！！！！！！！\n<图片1>\n<图片2>\n<图片3>",
                CommentsCount = 754,
            };
        }

        public static UserInfo GetUserInfoByManual()
        {
            return new Models.UserInfo()
            {
                JoinGroupCount = 38,
                TopicCount = 23,
                LikeTopicCount = 12,
                RecTopicCount = 13,
                ReplyTopicCount = 33,
                AlbumCount = 88,
                User = GetUserByManual(),
                GroupInfo = new Models.GroupInfo()
                {
                    Count = 20,
                    Start = 0,
                    Total = 38,
                    Groups = new List<Models.Group>()
                    {
                        GetGroupByManual(),
                        GetGroupByManual(),
                        GetGroupByManual(),
                        GetGroupByManual(),
                    }
                }
            };
        }

        public static Comment GetCommentByManual()
        {
            return new Models.Comment()
            {
                Text = "重要的不说！扯那么多闲话。谁要看你结婚照啊？！",
                VoteCount = 10,
                Author = GetUserByManual(),
                Id = "1030300793",
                Time = DateTime.Parse("2015-12-01 10:05:39")
            };
        }

        public static User GetUserByManual()
        {
            return new Models.User()
            {
                Name = "rwecho",
                Avatar = @"http://img3.douban.com/icon/u30279750-2.jpg",
                Id = "123454",
                Location = "河南郑州",
                Description = "让我一个人待一待",
            };
        }

        public static Photo GetPhotoByManual()
        {
            return  new Models.Photo()
            {
                Size = new Models.PhotoSize()
                {
                    Width = 500,
                    Height = 600,
                },
                Alt = "https://img3.doubanio.com/view/group_topic/large/public/p39562291.jpg",
                Layout = "C",
                TopicId = "81352712",
                AuthorId = "91513480",
                CreationDate = DateTime.Parse("2015-12-08 22:40:49")
            };
        }

        public static Doumail GetDoumailByManual()
        {
            return new Models.Doumail
            {
                Status = "R",
                ReceiverId = "30279750",
                Title = "",
                SenderId = "78962582",
                Content = "你好，你所说的豆瓣小组API\r\n/v2/group/user_topics \r\n/v2/group/:id/topics \r\n/v2/group/:id/ \r\n/v2/group/search\r\n哪里提供啊，有SDK可以下载吗？\r\n谢谢！",
                Published = DateTime.Parse("2015-11-03 10:33:44"),
                Id = "839237803",
                SenderUser = GetUserByManual(),
                ReceiverUser = GetUserByManual(),
            };
        }
    }
}
